#define _CRT_SECURE_NO_WARNINGS 1
#include"Date.h"

void Test1()
{
	Date d1(2025, 2, 25);
	Date d2; 

	d1.Print();
	d2.Print();

	Date d3(2025, 2, 29);
	d3.Print();
}

void Test2()
{
	Date d1(2025, 2, 25);
	//拷贝构造，一个已经存在的对象去初始化另一个要创建的对象
	Date d2(d1);//值拷贝没问题
	//Date d2=d1;这个也是拷贝构造
	//Date d2; d2=d1;这是赋值
	
	d1.Print();
	d2.Print();

	Date d3;
	//赋值，两个已经存在的对象进行拷贝
	d3 = d1;
	d3.Print();
	
}

void Test3()
{
	Date d1(2025, 2, 25);
	d1 += 100;
	d1.Print();

	Date d2(2025, 2, 25);
	Date ret = d2 + 20000;
	ret.Print();
}

void Test4()
{
	Date d1(2025, 2, 25);
	d1 -= 100;
	d1.Print();

	Date d2(2025, 2, 25);
	Date ret = d2 - 20000;
	ret.Print();
}

void Test5()
{
	Date d1(2025, 2, 25);
	++d1;//显示调用d1.operator++()
	d1.Print();

	Date d2(2025, 2, 25);
	Date ret = d2++;//显示调用d2.operator++(0)
	ret.Print();

	--d1;
	d1.Print();
	d1--;
	d1.Print();
}

void Test6()
{
	Date d1(2025, 2, 25);
	Date d2(2004, 3, 28);

	cout << d1 - d2 << endl;
}
void Test7()
{
	Date d1(2025, 2, 25);
		//Date*
	d1.Print();
	//void Print(); d1.Printf(Date*)//权限平移
	//void Print()const;			//权限缩小
	const Date d2(2025, 2, 26);
			 //const Date*
	//void Print(); d2.Print();权限的放大

	//void Print()const;  Print(const Date*)//权限的平移
	d2.Print();

	//const对象调不动普通的成员函数，权限放大
	//普通成员可以调用const成员函数，权限缩小

	cout << (d2 < d1) << endl;
}
void Test8()
{
	Date d1(2025, 2, 25);
	Date d2(2025, 2, 26);
	cout << d1;
	cout << d1 << d2;
	cin >> d1;
	cout << d1;
}
int main()
{
	//Test1();
	//Test2();
	//Test3();
	//Test4();
	//Test5();
	//Test6();
	//Test7();
	Test8();
}